package com.learn.english.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.learn.english.utils.JsonUtils;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @author TISNIW
 * @version 1.0
 * @date 2025/6/21 22:30
 * @desc
 */

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("course_video")
public class CourseVideo {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 所属课程ID
     */
    @TableField("course_id")
    private Long courseId;

    /**
     * 所属章节ID
     */
    @TableField("chapter_id")
    private Long chapterId;

    /**
     * 课程名称
     */
    @TableField("title")
    private String title;

    /**
     * 课程描述
     */
    @TableField("description")
    private String description;

    /**
     * 封面图地址
     */
    @TableField("cover_url")
    private String coverUrl;

    /**
     * 视频播放地址
     */
    @TableField("video_url")
    private String videoUrl;

    /**
     * 视频时长(秒)
     */
    @TableField("duration")
    private Integer duration;

    /**
     * 排序号
     */
    @TableField("sort")
    private Integer sort;

    /**
     * 状态 0-禁用 1-启用
     */
    @TableField("status")
    private Integer status;

    /**
     * 来源类型,1-管理员上传，2-老师上传，3-用户上传
     */
    @TableField("source_type")
    private Byte sourceType;

    /**
     * 上传用户id
     */
    @TableField("upload_id")
    private Long uploadId;

    /**
     * 播放次数
     */
    @TableField("play_count")
    private Long playCount;

    /**
     * 是否免费0-否，1-是
     */
    @TableField("is_free")
    private Byte isFree;

    /**
     * 价格
     */
    @TableField("cost")
    private BigDecimal cost;

    /**
     * 资源类型 1-mp4,2-hls,3-flv等
     */
    @TableField("resource_type")
    private Integer resourceType;

    /**
     * 创建时间，默认当前时间
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 更新时间，自动更新
     */
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    @Override
    public String toString() {
        return JsonUtils.writeValueAsString(this);
    }
}
